home *** CD-ROM | disk | FTP | other *** search
-
-
-
- Suchmodule für Arthur ab Version 1.8
- Suchmodul-Formatbeschreibung
-
- Last Update: 10.06.1998
-
- +---------------------------------------+----------------------------------------+
-
- Ab Arthur 1.8 ist es ja nun möglich auch eigene Suchmodule einzubinden.
- Um dem geneigten Programmierer das Format der Module näher zu bringen,
- soll dieser Text dienen.
-
- Möglich wäre dann beispielsweise auch eine Nummernbibliothek mit dem zugehörigen
- Suchmodul. Das Bibliotheksformat bietet hierfür die Möglichkeit an, ein bestimmtes
- namentliches Suchmodul vorzugsweise zu verwenden.
-
- Übrigens:
- Wer ein Modul schreibt, daß mit intelligenter und lokaler Suche um
- einiges schneller ist als die in Arthur eingebauten und es dem Arthur-Paket
- zur Verfügung stellt, bekommt Arthur für die Versandkosten =:)
-
-
- +---------------------------------------+----------------------------------------+
-
-
- Der Text ist in folgende Kapitel gegliedert:
-
-
- 1.0 · Richtlinien/Hinweise zum Modul
- 2.0 · Der Modul-Header
- 3.0 · Aufbau der Modul-Infostruktur
- 4.0 · Fehlercodes
- 5.0 · Übergabeparameter über den Stack
- 6.0 · Übergabe im Assembler-"Header"
- 7.0 · Vorhandene, anspringbare Routinen von Arthur
- 8.0 · Arthur-Bibliotheks-Format V1.8
-
-
-
-
-
- +---------------------------------------+----------------------------------------+
- 1.0: Modulhinweise:
- +---------------------------------------+----------------------------------------+
- ~ Parameter werden nach Wunsch von Arthur über den Stack
- oder über einen ASM-Header übergeben.
- ~ Die Register werden von Arthur komplett gerettet.
- ~ modale Dialogboxen, Zeichenfunktionen erlaubt (über-
- gebenes VDI-Handle verwenden)
- ~ Speicheranforderungen erlaubt, müssen aber vor Ende
- freigegeben werden.
- ~ Rücksprung nur mit rts.
- (Das Modul wird als ein Unterprogramm von Arthur betrachtet.)
- ~ die geladene Bibliothek ist auf Kompatibilität geprüft.
- ~ die Buchstaben eines übergebenen Suchstrings sind bei
- Option "Groß/Klein egal" schon alle Groß.
- ~ maximal 256 Ergebnisse
-
- ~ Hinweise zu den Rückgabeparametern (in D0):
-
- · Anzahl Ergebnisse, wenn Suche erfolgreich.
- · Bei einem Fehler sollte das Modul in D0 einen Zeiger auf
- einen nullterminierten Alertstring oder einen Fehlercode kleiner 0
- (siehe Fehlercodes) zurückliefern.
- · Der Rückgabewert Null besagt, daß das Gesuchte nicht gefunden wurde.
- · Anzahl durchsuchter Bibliothekseinträge als Long ab Buffer schreiben.
-
-
-
- ~ Die Bibliotheksdaten dürfen natürlich nicht verändert werden.
-
-
-
-
-
- +---------------------------------------+----------------------------------------+
- 2.0: Der Modul-Header
- +---------------------------------------+----------------------------------------+
-
- Der Modul-Header, der vor das Assemblierte Modul
- gelinkt werden muss (64 Byte Länge):
- ================================================
- Offset Format Wert Beschreibung
- ------------------------------------------------------------
- 00 Long 'AMOD' Identifikation
- 04 Long $0 reserviert
- 08 Long $0 reserviert
- 12 Long $FF2253 fest
- FIX: 16 Long ? Datei-Offset ab Null auf eine Struktur zur
- Modulinformation (Autor, Version..)
- oder Null.
- 20 Long ? Branch auf Suchroutine
- oder Null (dann nimmt Arthur die Adresse
- des geladenen Moduls + Header als
- Unterprogrammadresse an).
- 24 Long 'V1.0' Modulversion
- 28 Word ? Bitvektor:
-
- Bit Beschreibung
- --------------------
- 0 gesetzt = Modul Speicherresistent
- 1 gesetzt = Werte über ASM-Header
- (siehe ASM-Header)
- 2 gesetzt = wind_update() setzen
- 3 gesetzt = beg_update() setzen
- 4 gesetzt = Maus auf "Busy" setzen.
- (kann aber auch das Modul machen).
- 5-15 reserviert
-
- 30-45 Byte ? gewünschter Popuptext (Nullterminiert)
- 46-63 Byte ? freier Text (Nullterminiert)
-
- Ggf. ist Nichtverwendetes mit Wert Null zu füllen.
-
-
-
-
-
- +---------------------------------------+----------------------------------------+
- 3.0: Modul-Infostruktur:
- +---------------------------------------+----------------------------------------+
-
- Die Modul-Infostruktur dient zur Ausgabe einer Info über das Modul (Autor,
- Modulversion etc.).
-
- Die Modul-Info wird aufgerufen, wenn ein Anwender im Popup-Menü einen
- Eintrag mit Shift anwählt.
-
- Die Info kann sein:
-
- · Ein nullterminierter Alertstring, der dann von Arthur als Alert im Fenster
- dargestellt wird,
- · oder etwas Eigenes (modal).
-
- Der Strukturaufbau als Alert:
- -----------------------------
- infostrukt: dc.l -1 ; Alertstring
- dc.b '[1][Beispielinfo eines|Arthur-Suchmoduls][ OK ],0
-
- Der Strukturaufbau bei Eigener Infodarstellung:
- -----------------------------------------------
- infostrukt: dc.l infofunc ; Branch auf Info-Routine (rts verwenden!)
- (Die Register werden von Arthur gerettet)
-
-
-
- +---------------------------------------+----------------------------------------+
- 4.0: Fehlercodes:
- +---------------------------------------+----------------------------------------+
-
- -39 nicht genügend Speicher
- -107 fehlerhafte Bibliotheksdaten
- -109 fehlerhafte Parameter
- -110 fehlerhafte Bibliotheksadresse
- -111 fehlerhafte Suchstringadresse
- -112 fehlerhafte Bibliothek
- -113 falsches Bibliotheksformat
- -114 keine Grafikausgaben möglich
- -115 unbekannter Fehler
- -116 Suche nicht möglich
-
-
-
- +---------------------------------------+----------------------------------------+
- 5.0: Übergabeparameter:
- +---------------------------------------+----------------------------------------+
-
- Stackpos Format Beschreibung
- ------------------------------------------------------------
- 00 Long Rücksprungadresse
- 04 Word ap_id von Arthur
- 06 Word Arthur-VDI-Handle
- 08 Word Bitvektor der Arthur-Suchoptionen:
-
- Bit Bedeutung
- -----------------
- 0 Gross/Klein egal
- 1 intelligente Suche
- 2 Suchbeschränkung aktiv
- (im High-Byte steht dann die max. Ergebnisanzahl)
-
- 10 Long Adresse Arthur-Basepage
- 14 Long Adresse Bibliothek
- 18 Long Adresse eines 512 Bytes großen, frei nutzbaren Buffers ab
- dessen Anfang der Suchstring steht.
- 22 Word Länge des Suchstrings
- 24 Long Adresse Ergebnispointerspeicher (256 * 4 Longs)
- 28 Long Adresse der Decodier-Routine (siehe decode-Aufruf)
- 32 Long Adresse der String-Exist-Routine (siehe string_exist-Aufruf)
- 36 Long Adresse der Upper-Routine (siehe upper-Aufruf)
-
-
-
-
-
- +---------------------------------------+----------------------------------------+
- 6.0: Übergabe über einen Assembler-"Header":
- +---------------------------------------+----------------------------------------+
- Wie übergabeparameter, nur ID 'ASMP' ersetzt die Rücksprungadresse.
- Auf dem Stack steht dann nur die Rücksprungadresse.
-
- Sinn dieser Möglichkeit ist die Übergabe der Parameter in schon
- festgelegte Variablen, die am Anfang des Programmes deklariert sind
- (z.Bsp. mit EQU). Die Parameter werden dann nicht über den Stack
- übergeben, so